package com.yuandian.business.monitor.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.business_monitor.po.AlarmParams;
import com.yuandian.api.business_monitor.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 *
 * 告警信息Dao层
 * @author LinShiHe
 * @since 2021-05-27
 */
@Mapper
public interface BusiAlarmMapper {

    /**
     * 按照系统ID、业务编码、时间范围、网端ID等分类统计各类型告警
     * @param params 查询参数（系统ID、业务编码、时间范围、网端ID）
     * @param tableName  表名
     * @return 告警列表
     */
    List<AlarmProportionVo> queryBusinessAlarmTypePercent(@Param("params") AlarmParams params,
														  @Param("tableName") String tableName);

    /**
     * 按照系统ID、业务编码、时间范围、网端ID等分类统计各类型告警
     * @param params 查询参数（系统ID、业务编码、时间范围、网端ID）
     * @param tableName  表名
     * @return 告警列表
     */
    List<AlarmProportionVo> queryBusinessAlarmLevelPercent(@Param("params") AlarmParams params,
														   @Param("tableName") String tableName);

    /**
     * 按照系统ID、业务编码、时间范围、端口ID查询各告警对应不同等级的告警总数
     * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
     * @param tableName  表名
     * @return 返回通用结果集
     */
    List<AlarmProportionVo> queryBusinessGradeDate(Page<AlarmProportionVo> page,
												   @Param("params") AlarmParams params,
												   @Param("tableName") String tableName);

    /**
     * 按照系统ID、业务编码、时间范围、端口ID和告警类型id查询各告警详情列表
     * @param params  查询参数（系统ID、业务编码、时间范围、端口ID、告警类型id）
     * @param page 分页对象
     * @return 返回通用结果集
     */
    List<AlarmProportionCopyVo> queryBusinessAlarmList(@Param("page") Page<AlarmProportionCopyVo> page,
													   @Param("params") AlarmParams params,

													   @Param("tableName") String tableName);

	/**
	 * [告警反推分析]查询步骤统计
	 */
	StepStatisticsData queryStepStatisticsData(@Param("temp") AlarmReverseAnalysisVo temp,
											   @Param("tableName") String stepTableName,
											   @Param("startTime") String statisticsStartTime,
											   @Param("endTime") String statisticsEndTime);

	/**
	 * 基础告警归并分析-查询基础指标是否存在
	 * @param page 分页对象
	 * @param params 查询参数
	 * @param tableName
	 * @return 列表
	 */
	List<AlarmProportionVo> queryAlarmIndicatorExist(@Param("page") Page<AlarmProportionVo> page, @Param("params") AlarmParams params, @Param("tableName") String tableName);


	/**
	 * 告警详情-分类统计各类型告警（告警类型环形图---业务监控详情页面）
	 * @param params
	 * @return
	 */
	List<AlarmProportionVo> queryBusinessMonitorAlarmTypePercent(@Param("params") AlarmParams params);

	/**
	 * 校验表达式
	 * @param expressionStr
	 * @return
	 */
	List<Map<String,Object>> checkExpression(@Param("expressionStr")String expressionStr);

}
